************************************************************************* 北斗の拳 解析の足跡 Ver 03/26 2011 Written By Enri Y ************************************************************************* ------------ ROMの内容 ------------ 00000-03FFFH :Bank #00 04000-07FFFH :Bank #01 08000-0BFFFH :Bank #02 0C000-0FFFFH :Bank #03 10000-13FFFH :Bank #04 14000-17FFFH :Bank #05 18000-1BFFFH :Bank #06 1C000-1FFFFH :Bank #07 ---------------------- Mark IIIからみたメモリ ---------------------- 00000-03FFFH :Bank #00 04000-07FFFH :Bank #01 08000-0BFFFH :Bank #02-#07 バンクレジスタ0FFFFH:で切り替え 0C000-0DFFFH :本体内蔵のWork RAM 0FFFCH :バンクレジスタ コントロール 0FFFDH :00000H-03FFFHにBank #nnの内容をみる(#00で固定) 0FFFEH :04000H-07FFFHにBank #nnの内容をみる(#01で固定) 0FFFFH :08000H-0CFFFHにBank #nnの内容をみる(#02-#07を使用) ;----- ; ROM ;----- ;nn:mmmm nn=Bank #:mmmm=Real Address #00:00000H:Program Start #00:00008H:Set VDP Address:In DE=VDP Address(VDPレジスタもセット可) #00:00038H:INT V-Sync Interrupt (JP 0107H) #00:00066H:NMI Pause Key処理 #00:0007EH:初期設定 #00:00097H:Game Main (ここで無限ループ) #00:000B2H:Jump Table Main | #00:00105H #00:00106H:RET テーブルジャンプで使用ただ何もせずRETだけ #00:00107H:V-SYNC Interrupt #00:0012DH:V-SYNC Interrupt 本体 #00:00142H:Jump Table V-SYNC Interrupt | #00:00195H #00:0019BH:VDP初期化 (001B1H-001C6H=Data) #00:001C7H:Sprite Off #00:001D2H:VDP転送 DE=VDP Address,H=Data,BC=Length #00:00244H:BG Clear #00:00502H:Wait #00:00511H:Check SK-1100 #00:00524H:PSG Off #00:00535H:Get Key #00:00561H:Get 1P Key #00:005C6H:Get 2P Key #00:00807H:Make Screen #00:00CF3H:'SEGA Mark III' (Color Data 000H:00D4EH)(Code Data 000H:00D5FH) #00:00D4EH:'SEGA Mark III' Color | #00:0D5EH #00:0D5FH:'SEGA Mark III' Code Data | #00:0D87H #00:00D85H:Title (Title Color 000H:00EF3H) #00:0100DH:Demo #00:010A9H:Game Start 0 #00:0165DH;Vsync Sub #00:02B6AH-#00:02B73H Action Finish Blow Table Jump Data #00:06900H:Sound Main #00:06D9EH:周波数DATA | #00:06D19H #00:06D72H Set PSG Port #01:05B95H:Set Ending #01:060DEH:Print SCORE,TIME,LIFE #01:06475H:Chapter 1 Color Data | #01:06494H #01:06673H:Game Start 1 #01:06751H:Massage Data #01:0675EH:Color Data #01:0680EH:Game Over #02:0A379H:タイトルキャラクター Data | #02:0A63FH #02:0A76CH:タイトル ケン コード Data | #02:0A8FCH #02:0B2B4H:SEGA MARKIIIキャラクター Data | #02:0B393H #05:08000H:シン キャラクタ Data #06:08000H:シン ステージ BG コード Data #07:08000H:シン ステージ BG キャラクタ Data ------------ ワークエリア ------------ 0CA80H-0CEFFH:仮想BG(背景) 0D100H-0D63FH:仮想BG(1画面分) 0D980H:VDP ステータスレジスタの内容 0D981H:VSYNC Interrupt TableJump Flag 0FFH=Jump,000H=Stop 0D982H:Name Table 2nd Data 0D983H:カラー用 0D984H:D Button 0D985H:Game Key 0D986H:1Controlerの内容 BiT5:2 BiT4:1 BiT3:右 BiT2:左 BiT1:下 BiT0:上 0D987H:一回押した1Controlerの内容 BiT5:2 BiT4:1 BiT3:右 BiT2:左 BiT1:下 BiT0:上 0D988H:2Controlerの内容 BiT5:2 BiT4:1 BiT3:右 BiT2:左 BiT1:下 BiT0:上 0D989H:一回押した2Controlerの内容 BiT5:2 BiT4:1 BiT3:右 BiT2:左 BiT1:下 BiT0:上 0D98AH:Game Mode 000H=ノーマル 0FFH=Boss 07FH=デビルリバース 0D991H:デモ用ボス カウンタ 0D992H:ゲーム用フラグ Bit6:1=DEMO中にPAUSEボタンを押した 0=DEMO中にPAUSEボタンを押していない Bit5:1=Middle Bonus On 0=Middle Bonus Off Bit4:1=Warp On 0=Warp Off Bit3:1=DEMO On 0=DEMO Off Bit2:1=Connect SK-1100 0=No Connect SK-1100 Bit1:1=PLAYER 2 0=PLAYER 1 Bit0:1=2Players Game 0=1Player Game 0D993H-0D996H:1P Score 0D997H-0D99AH:2P Score 0D99CH:MainTask#nn 0D99DH:Round スクロール面、ボス面は別々にカウント 0D99EH:??? ゲーム中にキャクタ定義を行う0FFH=定義を行わない、000H=定義を行う 0D99FH:??? 000H-004H 表示スプライト用 カウンタ 0D9A0H:'SEGA MARK III'用カウンタ 0D9A1H-0D9A2H:Game Over,完用カウンタ 0D9A3H-0D9A4H:Title用カウンタ 0D9A3HのBit7の内容でメッセージが切り替わる Bit7:1=PUSH 1PLAY... 0=(C) BURONSON... 0D9A5H-0D9A6H:Demo用カウンタ 0D9A7H:TIME 0D9A8H:1P Round 0D9A9H:2P Round 0D9AAH:1P Stock 0D9ABH:2P Stock 0D9ACH:1P Flag 040H=Game 0D9ADH:2P Flag 040H=Game 0D9B0H:1P Midlle Boss カウンタ 0D9B1H:2P Midlle Boss カウンタ 0D9BAH:VDP R#08の内容(水平スクロール) 0D9CFH:Scroll Flag in Chapter 1,3,4 000H=Off 0FFH=On 0D9D0H:Scroll Flag 0FFH=On 000H=Off 0D9D2H:Scroll Flag 0FFH=On 000H=Off 0D9D3H:Midlle Boss カウンタ(倒すとInc) 0D9D5H:ゲームスタート用カウンタ 0D9DEH:タイトル用 カウンタ データの内容で雷が光る。 0DA80H-0DABFH:スプライト Y座標 0DAC0H-0DB3FH:スプライト X座標、インデックス 0DB40H-0DB41H:???Pointer 0DB42H:0DB43H:???Pointer 0DB5EH-0DBFH:Middle Boss Battle Time カウンタ 0DB61H-0DB62H:分割水平スクロール用(Chapter1,3) 0DB63H:'P'を取った後の無敵回数 0DB64H:アイテム用フラグ Bit3=Pをとったら1 Bit1=Eが出現したら1 Bit0=Eを出す=1、Eを出さない=0 0DB60H:Bonus Flashing Counter 0DB66H:タイトル’北斗の拳’Name Table Address Low 0DB67H:タイトル’北斗の拳’スクロール カウンタ 0DB69H:追加サウンド(SE) No.nn 0DB6AH:ラウンドセレクト用 フラグ 0FFH=On 000H=Off 0DB6BH:ラウンドセレクト コマンド用カウンタ 0DB6CH:Chapter 7 Clear Flag 0FFH=On 000H=Off 0DB6DH:???ミドルボス定義するキャラクタのライン 0DB70H-0DB71H: 0DB72H-0DB73H: 0DB74H-0DB75H:次のミドルボスのデータアドレス(ミドルボスを倒すと変化する) 0DB76H-0DB77H:次のミドルボスの定義するアドレス(ミドルボスを倒すと変化する) 0DB80H- 0DB80H:Ken (Charactor #00) 0DB81H:??? Ken (Charactor Patern) 0DB82H:Ken Y座標 (地上は07CH) 0DB83H: 0DB84H:Ken X座標 0DB85H: 0DB86H:Y座標移動ベクトル(―1で上、+1で下方向) 0DB87H: 0DB88H:X座標移動ベクトル(―1で左、+1で右方向) 0DB89H: 0DB9AH: 0DB9CH:歩くパターン 0DB90H:ゲーム用フラグ Bit7:Warp 1=On,0=Off Bit6:Scroll Scene 1=Scroll 0=Boss Bit5:Middle Boss 1=On 0=Off Bit4:Ken Damage 1=On 0=Off Bit3:Ken Auto Walk 1=On,0=Off Bit2:Boss 1=On,0=Off Bit1:Push Down Key Bit0:Miss Flag 1=On 0=Off 0DB91H:ジャンプ用フラグ Bit7: Bit6: Bit5:Attacked Yes=1 No=1 Bit4:Kick on=1 Off=0 Bit3: Bit2:Right Jump On=1 Off=0 Bit1:Left Jump ON=1 Off=0 Bit0:Jump On=1 Off=0 0DB93H:Ken Life 0DBA0H-DC3FH 0DBA0H:Charactor #nn 0DBA1H:??? Charactor Patern 0DBA2H:Charactor #nn Y座標 (地上は07CH) 0DBA3H: 0DBA4H:Charactor #nn X座標 0DBA5H: 0DBA6H:Charactor #nn Y座標移動ベクトル(―1で上、+1で下方向) 0DBA7H: 0DBA8H:Charactor #nn X座標移動ベクトル(―1で左、+1で右方向) 0DBB3H:Boss Life,Middle Boss Life 0DC40H-0DC7FH 0DC80H-0DC1FH 0DC20H-0DCBFH 0DE00H:Sound No(080H-09AH) 080Hで演奏 0DE01H:??? Sound フラグ Bit 2 Bit 1 Bit 0 CH A Track Buffer 0DE02H: +000H ???フラグ Bit 7 1=CH A Play,0=CH A Stop 0DE03H: +001H Channel 080H=CH A 0DE04H: +002H 0DE05H-0DE06H: +003H,+004H Data Address 0DE07H: +005H ???音階#nnに足す(実際はマイナスデータを足す) 0DE08H: +006H 0DE09H: +007H ??? Data Address #nn 0DE0AH: +008H ??? 音量用 0DE0BH: +009H 0DE0CH-0DE0DH: +00AH,+00BH ;音の長さ 0DE0EH-0DE0FH: +00CH,+00DH ;現在の音の長さ 0DE10H: +00EH ??? 音量用 0DE11H: +00FH 0DE12H-0DE13H: +010H,+011H BGM 周波数DATA 0DE14H-0DE15H: +012H,+013H PSG Write A周波数DATA 0DE16H-0DE17H: +014H,+015H 0DE18H: +016H Ch A音量 (000H-00FH) 0DE19H-0DE1FH:??? 未使用 CH B Track Buffer 0DE20H: 0DE32H-0DE33H:Ch B周波数DATA 0DE34H-0DE35H:現在のCh B周波数DATA 0DE38H:Ch B音量 0DE52H-0DE53H:Ch C周波数DATA 0DE54H-0DE55H:現在のCh C周波数DATA 0DE58H:Ch C音量 0DE78H:Ch D音量 0DEA2H:??? フラグ 0DEC2H:??? フラグ 0DEE2H:??? フラグ -------- Sound No -------- 089H:Ken Miss 08BH:Ending 08CH:Game Over BGM 08DH:Title BGM 08EH:Main BGM 08FH:Boss BGM 094H:SE カーネル ブーメラン 095H:SE 羅漢仁王拳 098H:Get 'P' Item 099H:Get 'E' Item 09AH:Boss Clear -------- Task#nn -------- MainTask#nnとVSyncTask#nnは連動して動作します。 MainTask#nnでRETになってもVSyncTask#nnで何かしらのタ動作をします。 MainTask#nn T00B2: DW A0CF3 ;#00:'SEGA MARK III' DW A0106 ;#01:Ret (Counter Dec) DW A0D85 ;#02:Title Initialize DW A0106 ;#03:Title Main(RET) DW A60BB ;#04:D992:Bit6=1,Bit3=0,Set Table Jump02 DW A0106 ;#05:Ret DW A100D ;#06:Demo DW A10A9 ;#07:Game Main Initialize DW A1127 ;#08:Game Main DW A0106 ;#09:Set Lift in Boss Stage (RET) DW A6673 ;#10:Game Start DW A0106 ;#11:Game Start Main (RET) DW A1183 ;#12:??? Scroll Round Clear DW A680E ;#13:Game Over DW A0106 ;#14:Ret DW A11BA ;#15:Check Pattern DW A11CE ;#16:??? Put Kenshiro DW A5CF6 ;#17:??? Boss Clear DW A5D33 ;#18:??? Boss Clear DW A5D54 ;#19:??? Shin Clear DW A2776 ;#20:Print Finish Blow DW A2816 ;#21:Action Finish Blow DW A27F5 ;#22:Boss Down DW A1229 ;#23:??? Next Stage DW A1266 ;#24:??? Add Score Boss Clear DW A0106 ;#25:Ret DW A1309 ;#26:??? Boss Clear DW A0106 ;#27:Ret DW A5DA1 ;#28:??? Toki Clear DW A0106 ;#29:Ret DW A5E25 ;#30: DW A5E58 ;#31: DW A0106 ;#32:Ret DW A0106 ;#33:Ret DW A0106 ;#34:Ret DW A5B95 ;#35:Set Ending DW A5BF2 ;#36: DW A5C19 ;#37: DW A5C38 ;#38: DW A5C72 ;#39: DW A5CAD ;#40: DW A0106 ;#41:Title Logo Main (RET) VSyncTask#nn T0142: DW A0196 ;#00 VSyncTask Close DW A0D3A ;#01 'SEGA MARK III' Counter Dec DW A0196 ;#02 VSyncTask Close DW A0E43 ;#03 Title Main DW A60CB ;#04 DW A60D8 ;#05 DW A0196 ;#06 VSyncTask Close DW A0196 ;#07 Game Main Initialize (Nothing) DW A1130 ;#08 Game Main DW A1141 ;#09 Set Lift in Boss Stage DW A0196 ;#10 Game Start (Nothing) DW A673F ;#11 Game Start Main DW A11AF ;#12 DW A0196 ;#13 VSyncTask Close DW A689F ;#14 DW A0196 ;#15 VSyncTask Close DW A120F ;#16 DW A0196 ;#17 VSyncTask Close DW A5D8C ;#18 DW A5D8C ;#19 DW A0196 ;#20 VSyncTask Close DW A283D ;#21 DW A0196 ;#22 VSyncTask Close DW A0196 ;#23 VSyncTask Close DW A0196 ;#24 VSyncTask Close DW A12BD ;#25 DW A0196 ;#26 VSyncTask Close DW A131F ;#27 DW A5DD8 ;#28 DW A5DE7 ;#29 DW A5DE1 ;#30 DW A5DE1 ;#31 DW A5E65 ;#32 Boss Clear DW A5E7E ;#33 DW A5E94 ;#34 DW A0196 ;#35 VSyncTask Close DW A5D8C ;#36 DW A5D8C ;#37 DW A5D8C ;#38 DW A5D8C ;#39 DW A5D92 ;#40 DW A0DEF ;#41 Title Logo Scroll Main ;////////////////////////// ;/ MainTask#08 Table Jump / ;////////////////////////// ;0D99DH=Table Jump #nn T1349: DW A6449 ;Round 1 DW A324D ;Round 2 SHIN DW A6449 ;Round 3 DW A324D ;Round 4 DW A6449 ;Round 5 DW A324D ;Round 6 Devil Reverse DW A6431 ;Round 7 DW A324D ;Round 8 TOKI DW A642A ;Round 9 DW A324D ;Round10 SOUTHER DW A324D DW A324D DW A324D DW A324D DW A324D DW A324D DW A324D ;//////// ;/ CH A / ;//////// DB 0E4H,015H,091H,012H ;75AC Set +007H:015H,#0B,012H DB 0E4H,01DH,091H,006H ;75B0 Set +007H:01DH,#0B,006H DB 098H ;75B4 #12 DB 09DH,00CH ;75B5 #17 DB 09FH,006H ;75B7 #19 DB 0E4H,015H,0A0H,018H ;75B9 Set +007H:015H,#1A DB 0E4H,01DH,09DH,00CH ;75BD Set +007H:01DH,#17 DB 0A0H,006H ;75C1 #1A DB 0A2H ;75C3 #1C DB 0E4H,015H,0A4H,018H ;75C4 Set +007H:015H,#1E DB 0E4H,01DH,09FH,00CH ;75C8 Set +007H:01DH,#19 DB 09FH,004H ;75CC #19 DB 0A0H ;75CE #1A DB 09FH ;75CF #19 DB 0E4H,015H,09BH,018H ;75D0 Set +007H:015H,#15 DB 0A0H,00CH ;75D4 #1A DB 09FH ;75D6 #19 DB 099H,018H ;75D7 #13 DB 0E4H,01DH,0A0H,008H ;75D9 Set +007H:01DH,#1A DB 09FH ;75DD #19 DB 09BH ;75DE #15 DB 0E0H,001H,0A2H,010H ;75DF Set +002H:001H,#1C DB 0A4H,011H ;75E3 #1E DB 0A5H,012H ;75E5 #1F DB 0A4H,013H ;75E7 #1E DB 0A2H,014H ;75E9 #1C DB 0A0H,015H ;75EB #1A DB 0E4H,01BH,09DH,048H ;75ED Set +007H:01BH,#17 DB 0E2H,001H ;75F1 BGM End A6EEF: DB 024H DB 068H DB 0ACH DB 0FFH DB 0FFH DB 002H ;-------------------------------------- ; ;ラウンド・データ ; ;///////////////////////// ;/ Chapter 1 Scroll Data / ;///////////////////////// T0B8E: DB 0FFH ;??? Scroll type DB 084H ;to Last Boss DB 050H ;to 1st Middle Boss DB 000H,080H ;Data Address 08000H DB 005H ;CHR#05 DB 060H ;to 2nd Middle Boss DB 00DH,087H ;Data Address 0870DH DB 009H ;CHR#09 DB 070H ;to 3rd Middle Boss DB 040H,092H ;Data Address 09240H DB 00DH ;CHR#0D DB 080H ;to 4th Middle Boss DB 0FFH,08DH ;Data Address 08DFFH DB 00BH ;CHR#0B DB 090H ;to Last Boss DB 0FFH,08DH ;Dummy DB 00BH ;Dummy ;///////////////////////// ;/ Chapter 2 Scroll Data / ;///////////////////////// T0BA4: DB 000H DB 020H ;to Last Boss DB 00EH ;to 1st Middle Boss DB 0E1H,098H ;Data Address DB 017H ;CHR#17 DB 01EH ;to 2nd Middle Boss DB 0E5H,09DH ;Data Address DB 019H ;CHR#19 DB 028H ;to Last Boss DB 0E5H,09DH DB 019H ;///////////////////////// ;/ Chapter 3 Scroll Data / ;///////////////////////// T0BB2: DB 0FFH DB 060H ;to Last Boss DB 050H ;to 1st Middle Boss DB 0BCH,0A2H ;Data Address DB 01DH ;CHR#1D DB 070H ;to Last Boss DB 0E1H,098H DB 017H ;///////////////////////// ;/ Chapter 4 Scroll Data / ;///////////////////////// T0BBC: DB 0FFH DB 064H ;to Last Boss DB 050H ;to 1st Middle Boss DB 0D7H,0A8H ;Data Address DB 024H ;CHR#24 DB 060H ;to 2nd Middle Boss DB 074H,0ACH ;Data Address DB 026H ;CHR#26 DB 070H ;to Last Boss DB 0D7H,0A8H> ;Data Address DB 026H ;CHR#26 ;///////////////////////// ;/ Chapter 5 Scroll Data / ;///////////////////////// T0BCA: DB 000H DB 020H ;to Last Boss DB 00AH to 1st Middle Boss DB 0AFH,0B3H ;Data Address DB 036H ;CHR#36 DB 014H ;to 2nd Middle Boss DB 0AFH,0B3H ;Data Address DB 036H ;CHR#36 DB 01CH ;to 3rd Middle Boss DB 0AFH,0B3H ;Data Address DB 036H ;CHR#36 DB 028H ;to Last Boss DB 0AFH,0B3H ;Data Address DB 036H